// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause


//#pragma once

#ifndef DATAOBJECT_H
#define DATAOBJECT_H

#include <QObject>

//![0]
class DataObject : public QObject
{
    //Q_OBJECT 和 Q_PROPERTY 是用于实现 属性系统 和 信号槽机制 的关键宏。
    Q_OBJECT
    //QString name	定义属性类型为 QString，名称为 name。
    //    READ name	指定读取函数：QString name() const。
     //   WRITE setName	指定写入函数：void setName(const QString &name)。
    //    NOTIFY nameChanged	当属性变化时触发的信号：void nameChanged()。

    Q_PROPERTY(QString name   READ name    WRITE setName    NOTIFY nameChanged)
    Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged)
    //![0]

public:
    DataObject(QObject *parent=0);
    DataObject(const QString &name, const QString &color, QObject *parent=0);

    QString name() const;
    void setName(const QString &name);

    QString color() const;
    void setColor(const QString &color);

signals:
    void nameChanged();
    void colorChanged();

private:
    QString m_name;
    QString m_color;
    //![1]
};
//![1]

#endif // DATAOBJECT_H
